home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / usenet / volume7 / nethack3 / patch2a < prev    next >
Encoding:
Internet Message Format  |  1989-08-19  |  54.2 KB

  1. Path: uunet!zephyr.ens.tek.com!tekgen!tekred!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v08i006:  NetHack3 -  display oriented dungeons & dragons (Ver. 3.0), Patch2a
  5. Message-ID: <4458@tekred.CNA.TEK.COM>
  6. Date: 18 Aug 89 15:45:37 GMT
  7. Sender: nobody@tekred.CNA.TEK.COM
  8. Lines: 1654
  9. Approved: billr@saab.CNA.TEK.COM
  10.  
  11. Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
  12. Posting-number: Volume 8, Issue 6
  13. Archive-name: NetHack3/Patch2a
  14. Patch-To: NetHack3: Volume 7, Issue 56-93
  15.  
  16.     [Here's the second set of official patches to NetHack3
  17.      (in 7 parts). See the file UPDATE2 for the list of changes
  18.      that have been made. Unpack this and all the other parts
  19.      in your top level NetHack directory and execute the
  20.      'do_patch2.sh' shell script (if you're on Unix) to auto-
  21.      matically apply the patches using 'patch'.  If Patch2b
  22.      unpacked with two control characters missing they are
  23.      control-G's at the end of the two "echo " statements in
  24.      Makefile.tcc.  -br]
  25.  
  26. #! /bin/sh
  27. # This is a shell archive.  Remove anything before this line, then unpack
  28. # it by saving it into a file and typing "sh file".  To overwrite existing
  29. # files, type "sh file -c".  You can also feed this as standard input via
  30. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  31. # will see the following message at the end:
  32. #        "End of archive 1 (of 7)."
  33. # Contents:  UPDATE2 do_patch2.sh patch02a
  34. # Wrapped by billr@saab on Fri Aug 18 08:32:41 1989
  35. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  36. if test -f 'UPDATE2' -a "${1}" != "-c" ; then 
  37.   echo shar: Will not clobber existing file \"'UPDATE2'\"
  38. else
  39. echo shar: Extracting \"'UPDATE2'\" \(2893 characters\)
  40. sed "s/^X//" >'UPDATE2' <<'END_OF_FILE'
  41. X--------------
  42. XUPDATE2
  43. X--------------
  44. XThis patch kit upgrades NetHack to version 3.0f.  The kit should
  45. Xbe applied to the original release, patched with patchlevel 1.
  46. X
  47. XMany of the diffs included here are bugfixes to bugs reported to 
  48. Xus by players.  We are very grateful for these reports.
  49. X  
  50. XThere were questions about our netnews usage.  We use the good
  51. Xoffices of comp.sources.games because, unlike rec.games.hack, it 
  52. Xis archived.  It is the only way to secure the availability of 
  53. Xthe source code and the official patches for future users.  For 
  54. Xthis reason, comp.sources.games will remain the only place where 
  55. Xthe official NetHack patches are posted.
  56. X
  57. XOccasionally we may see a need to post a semi-official stopgap patch 
  58. Xsuch as the one for the 'killer' bug posted just after Patch 1 in
  59. Xrec.games.hack and in comp.sources.games.bugs.  These stopgap patches
  60. Xwill always be included in the next official patch kit.  The 'killer'
  61. Xbugfix is, indeed, included here.
  62. X
  63. XThe above two newsgroups often contain many bug reports and unofficial
  64. Xfixes.  We read these groups, and thus we get the reports.  But it
  65. Xwill be helpful if you mailed nethack-bugs a copy of your posting.
  66. XIf your site gets these newsgroups, you may want to check them for 
  67. Xmentions of bugs before reporting the same bug to nethack-bugs (or
  68. Xto the same newsgroups, for that matter -- unless you have additional 
  69. Xinformation).
  70. X
  71. X
  72. X
  73. XNow, on to the main changes.
  74. X
  75. XObjects were rearranged slightly, so the cautious may want to throw 
  76. Xout saved games and bones files.
  77. X
  78. XTimo Hakulinen provided an OS/2 port.
  79. X
  80. XVarious people convinced various OS versions to be better about 
  81. Xsensing the available screen size at start-up.
  82. X
  83. XThe game tries now to be smarter about guessing defaults for players 
  84. Xwho don't set environment variables of interest to NetHack.
  85. X
  86. XEric Raymond extended the PC color code slightly to allow its use by 
  87. XSVR3.2 machines with color information from terminfo, and also allowed 
  88. Xmany extended commands to be available via a meta key under SYSV.
  89. X
  90. XPaul Gyugyi provided a better makefile for MicroSoft C.
  91. X
  92. XThe MSDOS terminal problems, including always needing TERMLIB, are
  93. X(hopefully) fixed.
  94. X
  95. XThe '/' command now allows multiple identifications, and more things 
  96. Xmay be usefully identified.
  97. X
  98. XMore code was shuffled and rewritten to satisfy compiler and preprocessor
  99. Xconstraints.
  100. X
  101. XStarving dogs again eat people food.
  102. X
  103. XCredit cards can no longer lock things.
  104. X
  105. XDoors have been toned down slightly, but are in no danger of being removed.
  106. X
  107. XThe gods' ranking of player troubles was revised.
  108. X
  109. XWizards can no longer start with certain useless items.
  110. X
  111. XVarious code, including game ending, seduction, and monster attack, is
  112. Xconsiderably cleaner.
  113. X
  114. XAbove all: scores of bugs were fixed.
  115. X
  116. X
  117. XPlease continue testing the game and reporting to nethack-bugs.  Your
  118. Xresponse has been wonderful, and it has made this effort worth while.
  119. X
  120. X
  121. END_OF_FILE
  122. if test 2893 -ne `wc -c <'UPDATE2'`; then
  123.     echo shar: \"'UPDATE2'\" unpacked with wrong size!
  124. fi
  125. # end of 'UPDATE2'
  126. fi
  127. if test -f 'do_patch2.sh' -a "${1}" != "-c" ; then 
  128.   echo shar: Will not clobber existing file \"'do_patch2.sh'\"
  129. else
  130. echo shar: Extracting \"'do_patch2.sh'\" \(496 characters\)
  131. sed "s/^X//" >'do_patch2.sh' <<'END_OF_FILE'
  132. X#! /bin/sh
  133. X# script to call patch to apply diff files
  134. X# make sure all of the patch files (and this file) are in your top level
  135. X# NetHack directory
  136. X#
  137. Xecho "applying patch2a"
  138. Xpatch -p <patch02a
  139. Xecho "applying patch2b"
  140. Xpatch -p <patch02b
  141. Xecho "applying patch2c"
  142. Xpatch -p <patch02c
  143. Xecho "applying patch2d"
  144. Xpatch -p <patch02d
  145. Xecho "applying patch2e"
  146. Xpatch -p <patch02e
  147. Xecho "applying patch2f"
  148. Xpatch -p <patch02f
  149. Xecho "applying patch2g"
  150. Xpatch -p <patch02g
  151. Xecho "all patches applied, check for rejects"
  152. END_OF_FILE
  153. if test 496 -ne `wc -c <'do_patch2.sh'`; then
  154.     echo shar: \"'do_patch2.sh'\" unpacked with wrong size!
  155. fi
  156. chmod +x 'do_patch2.sh'
  157. # end of 'do_patch2.sh'
  158. fi
  159. if test -f 'patch02a' -a "${1}" != "-c" ; then 
  160.   echo shar: Will not clobber existing file \"'patch02a'\"
  161. else
  162. echo shar: Extracting \"'patch02a'\" \(47487 characters\)
  163. sed "s/^X//" >'patch02a' <<'END_OF_FILE'
  164. X*** include/Old/patchlevel.h    Wed Aug 16 14:09:33 1989
  165. X--- include/patchlevel.h    Wed Aug 16 14:03:09 1989
  166. X***************
  167. X*** 9,12 ****
  168. X   *  add more instructions for new environments and things commonly done wrong
  169. X   */
  170. X  
  171. X! #define PATCHLEVEL    1
  172. X--- 9,23 ----
  173. X   *  add more instructions for new environments and things commonly done wrong
  174. X   */
  175. X  
  176. X! /*
  177. X!  *  Patch 2, August 16, 1989
  178. X!  *  add support for OS/2 (courtesy Timo Hakulinen)
  179. X!  *  add a better makefile for MicroSoft C (courtesy Paul Gyugyi)
  180. X!  *  more accomodation of compilers and preprocessors
  181. X!  *  add better screen-size sensing
  182. X!  *  expand color use for PCs and introduce it for SVR3 UNIX machines
  183. X!  *  extend '/' to multiple identifications
  184. X!  *  fix various minor bugs, and do further code cleaning
  185. X!  */
  186. X! 
  187. X! #define PATCHLEVEL    2
  188. X*** ./Old/Files    Wed Aug 16 11:58:20 1989
  189. X--- ./Files    Wed Aug 16 10:25:13 1989
  190. X***************
  191. X*** 27,34 ****
  192. X  
  193. X  others:
  194. X  (files for MSDOS version)
  195. X! Make.ini        Makefile.pc     Makefile.tcc    Maketcc.ini     NetHack.cnf
  196. X! termcap         termcap.uu
  197. X  (files for MSDOS, Amiga, and Atari versions)
  198. X  pcmain.c        pctty.c         pcunix.c
  199. X  (file for MSDOS and new Atari versions)
  200. X--- 27,34 ----
  201. X  
  202. X  others:
  203. X  (files for MSDOS version)
  204. X! Make.ini        Makefile.msc    Makefile.os2    Makefile.tcc    Maketcc.ini
  205. X! NetHack.cnf     termcap         termcap.uu
  206. X  (files for MSDOS, Amiga, and Atari versions)
  207. X  pcmain.c        pctty.c         pcunix.c
  208. X  (file for MSDOS and new Atari versions)
  209. X***************
  210. X*** 44,57 ****
  211. X  include:
  212. X  (files for all versions)
  213. X  amiconf.h       artifact.h      attrib.h        config.h        coord.h
  214. X! decl.h          edog.h          epri.h          eshk.h          extern.h
  215. X! flag.h          func_tab.h      global.h        gold.h          hack.h
  216. X! lev.h           mfndpos.h       mkroom.h        monattk.h       mondata.h
  217. X! monflag.h       monst.h         monsym.h        msdos.h         obj.h
  218. X! objclass.h      patchlevel.h    pcconf.h        permonst.h      prop.h
  219. X! rm.h            sp_lev.h        spell.h         system.h        tosconf.h
  220. X! tradstdc.h      trap.h          trapname.h      unixconf.h      vault.h
  221. X! wseg.h          you.h           youprop.h
  222. X  (file for special level compiler (STRONGHOLD option))
  223. X  lev_comp.h
  224. X  
  225. X--- 44,57 ----
  226. X  include:
  227. X  (files for all versions)
  228. X  amiconf.h       artifact.h      attrib.h        config.h        coord.h
  229. X! decl.h          def_os2.h       edog.h          epri.h          eshk.h
  230. X! extern.h        flag.h          func_tab.h      global.h        gold.h
  231. X! hack.h          lev.h           mfndpos.h       mkroom.h        monattk.h
  232. X! mondata.h       monflag.h       monst.h         monsym.h        msdos.h
  233. X! obj.h           objclass.h      patchlevel.h    pcconf.h        permonst.h
  234. X! prop.h          rm.h            sp_lev.h        spell.h         system.h
  235. X! tosconf.h       tradstdc.h      trap.h          trapname.h      unixconf.h
  236. X! vault.h         wseg.h          you.h           youprop.h
  237. X  (file for special level compiler (STRONGHOLD option))
  238. X  lev_comp.h
  239. X  
  240. X*** ./Old/Makefile.top    Wed Aug 16 11:58:50 1989
  241. X--- ./Makefile.top    Wed Aug 16 11:45:21 1989
  242. X***************
  243. X*** 55,61 ****
  244. X  #    (don't yank the old version out from under people who're playing it)
  245. X      mv $(GAMEDIR)/$(GAME) $(GAMEDIR)/$(GAME).old
  246. X      cp src/$(GAME) $(GAMEDIR)
  247. X!     cp auxil/$(GAME).sh $(SHELLDIR)/$(GAME)
  248. X  # correct the permissions on the new versions
  249. X      -( cd $(GAMEDIR) ; chown $(GAMEUID) $(AUX) $(GAME) ; \
  250. X              chgrp $(GAMEGRP) $(AUX) $(GAME) ; \
  251. X--- 55,63 ----
  252. X  #    (don't yank the old version out from under people who're playing it)
  253. X      mv $(GAMEDIR)/$(GAME) $(GAMEDIR)/$(GAME).old
  254. X      cp src/$(GAME) $(GAMEDIR)
  255. X!     sed -e 's;/usr/games/lib/nethackdir;$(GAMEDIR);' \
  256. X!         < auxil/nethack.sh \
  257. X!         > $(SHELLDIR)/$(GAME)
  258. X  # correct the permissions on the new versions
  259. X      -( cd $(GAMEDIR) ; chown $(GAMEUID) $(AUX) $(GAME) ; \
  260. X              chgrp $(GAMEGRP) $(AUX) $(GAME) ; \
  261. X***************
  262. X*** 79,85 ****
  263. X  # copy over the game files
  264. X      ( cd auxil ; cp $(AUX) $(GAMEDIR) )
  265. X      cp src/$(GAME) $(GAMEDIR)
  266. X!     cp auxil/$(GAME).sh $(SHELLDIR)/$(GAME)
  267. X  # set up the permissions
  268. X      -chown $(GAMEUID) $(SHELLDIR)/$(GAME) $(GAMEDIR) $(GAMEDIR)/*
  269. X      chgrp $(GAMEGRP) $(SHELLDIR)/$(GAME) $(GAMEDIR) $(GAMEDIR)/*
  270. X--- 81,89 ----
  271. X  # copy over the game files
  272. X      ( cd auxil ; cp $(AUX) $(GAMEDIR) )
  273. X      cp src/$(GAME) $(GAMEDIR)
  274. X!     sed -e 's;/usr/games/lib/nethackdir;$(GAMEDIR);' \
  275. X!         < auxil/nethack.sh \
  276. X!         > $(SHELLDIR)/$(GAME)
  277. X  # set up the permissions
  278. X      -chown $(GAMEUID) $(SHELLDIR)/$(GAME) $(GAMEDIR) $(GAMEDIR)/*
  279. X      chgrp $(GAMEGRP) $(SHELLDIR)/$(GAME) $(GAMEDIR) $(GAMEDIR)/*
  280. X***************
  281. X*** 91,98 ****
  282. X      -$(GAMEMANCREATE) $(MANDIR)/$(GAME).$(MANEXT)
  283. X      -$(LEVMANCREATE) $(MANDIR)/lev_comp.$(MANEXT)
  284. X  
  285. X  clean:
  286. X!     ( cd src ; make clean)
  287. X  
  288. X  spotless:
  289. X!     ( cd src ; make spotless)
  290. X--- 95,107 ----
  291. X      -$(GAMEMANCREATE) $(MANDIR)/$(GAME).$(MANEXT)
  292. X      -$(LEVMANCREATE) $(MANDIR)/lev_comp.$(MANEXT)
  293. X  
  294. X+ # 'make clean' removes all the .o files, but leaves around all the executables
  295. X+ # and compiled data files
  296. X  clean:
  297. X!     ( cd src ; make clean )
  298. X  
  299. X+ # 'make spotless' returns the source tree to near-distribution condition.
  300. X+ # it removes .o files, executables, and compiled data files
  301. X  spotless:
  302. X!     ( cd src ; make spotless )
  303. X!     ( cd auxil ; make spotless )
  304. X*** amiga/Old/amitcap.c    Wed Aug 16 12:00:51 1989
  305. X--- amiga/amitcap.c    Fri Aug 11 17:06:35 1989
  306. X***************
  307. X*** 16,22 ****
  308. X  static char MR[] = "\2337m";        /* Reverse on   CSI 7 m */
  309. X  static char ME[] = "\2330m";        /* Reverse off  CSI 0 m */
  310. X  
  311. X! #ifdef MSDOSCOLOR    /* creps@silver.bacs.indiana.edu */
  312. X  static char SO[] = "\23333m";       /* Standout: Color #3 (orange) */
  313. X  static char SE[] = "\2330m";
  314. X  #else
  315. X--- 16,22 ----
  316. X  static char MR[] = "\2337m";        /* Reverse on   CSI 7 m */
  317. X  static char ME[] = "\2330m";        /* Reverse off  CSI 0 m */
  318. X  
  319. X! #ifdef TEXTCOLOR
  320. X  static char SO[] = "\23333m";       /* Standout: Color #3 (orange) */
  321. X  static char SE[] = "\2330m";
  322. X  #else
  323. X***************
  324. X*** 24,33 ****
  325. X--- 24,42 ----
  326. X  static char SE[] = "\2330m";
  327. X  #endif
  328. X  
  329. X+ #ifdef TEXTCOLOR
  330. X+ /* color maps */
  331. X+ static int foreg[8] = { 2, 3, 1, 3, 3, 3, 3, 0 };
  332. X+ static int backg[8] = { 1, 2, 2, 0, 1, 1, 1, 1 };
  333. X+ #endif
  334. X  
  335. X  void
  336. X  startup()
  337. X  {
  338. X+ #ifdef TEXTCOLOR
  339. X+     register int c;
  340. X+ #endif  
  341. X+ 
  342. X      (void) Initialize();        /* This opens screen, window, console, &c */
  343. X  
  344. X      CO = COLNO;
  345. X***************
  346. X*** 37,43 ****
  347. X  
  348. X      CD = "\233J";               /* used in pager.c */
  349. X  
  350. X! #ifdef MSDOSCOLOR
  351. X      /*
  352. X       * We need 5 different 'colors', but in a 4-color screen we really
  353. X       * cannot make these available, even more so because we use the user's
  354. X--- 46,52 ----
  355. X  
  356. X      CD = "\233J";               /* used in pager.c */
  357. X  
  358. X! #ifdef TEXTCOLOR
  359. X      /*
  360. X       * We need 5 different 'colors', but in a 4-color screen we really
  361. X       * cannot make these available, even more so because we use the user's
  362. X***************
  363. X*** 44,55 ****
  364. X       * preferred Workbench colors. Instead, we use different combinations
  365. X       * of the 4 possible colors. For orientation: default colors are
  366. X       * white (1) on blue (0), and a orange (3) cursor on a black (2) character.
  367. X       */
  368. X!     HI_GREEN  = "\23331;42m";   /* White on Black */
  369. X!     HI_RED    = "\23333;42m";   /* Orange on Black */
  370. X!     HI_YELLOW = "\23333;40m";   /* Orange on Blue */
  371. X!     HI_BLUE   = "\23333;41m";   /* Orange on White */
  372. X!     HI_WHITE  = "\23330;41m";   /* Blue on White */
  373. X  
  374. X      HI = "\2331m";              /* Bold (hilight) */
  375. X      HE = "\2330m";              /* Plain */
  376. X--- 53,72 ----
  377. X       * preferred Workbench colors. Instead, we use different combinations
  378. X       * of the 4 possible colors. For orientation: default colors are
  379. X       * white (1) on blue (0), and a orange (3) cursor on a black (2) character.
  380. X+      *
  381. X+      * "Black": Black on White
  382. X+      * "Red":    Orange on Black
  383. X+      * "Green": White on Black
  384. X+      * "Yellow": Orange on Blue
  385. X+      * "Blue":    Orange on White
  386. X+      * "Magenta": White on Black
  387. X+      * "Cyan":    White on Black
  388. X+      * "White": Blue on White
  389. X       */
  390. X!     for (c = 0; c < SIZE(HI_COLOR); c++) {
  391. X!     HI_COLOR[c] = (char *) alloc(sizeof("E0;33;44m"));
  392. X!     Sprintf(HI_COLOR[c], "\2333%d;4%dm", foreg[c], backg[c]);
  393. X!     }
  394. X  
  395. X      HI = "\2331m";              /* Bold (hilight) */
  396. X      HE = "\2330m";              /* Plain */
  397. X*** auxil/Old/Guidebook.mn    Wed Aug 16 12:02:09 1989
  398. X--- auxil/Guidebook.mn    Tue Aug 15 22:59:21 1989
  399. X***************
  400. X*** 4,10 ****
  401. X  .ds vr "NetHack Version 3.0
  402. X  .ds f0 "\*(vr
  403. X  .ds f1
  404. X! .ds f2 "July 22, 1989
  405. X  .mt
  406. X  A Guide to the Mazes of Menace
  407. X  .au
  408. X--- 4,10 ----
  409. X  .ds vr "NetHack Version 3.0
  410. X  .ds f0 "\*(vr
  411. X  .ds f1
  412. X! .ds f2 "August 13, 1989
  413. X  .mt
  414. X  A Guide to the Mazes of Menace
  415. X  .au
  416. X***************
  417. X*** 500,520 ****
  418. X  commands.  You may obtain a list of them by entering `?'.  What
  419. X  extended commands are available depend on what features the game was
  420. X  compiled with.  Most extended commands are used only under limited
  421. X! circumstances.
  422. X  .pg
  423. X  If the
  424. X  .op number_pad
  425. X  option is on, some additional letter commands are available:
  426. X  .lp j
  427. X! jump to another location.  Same as ``#jump''.
  428. X  .lp k
  429. X  kick something (usually a door).  Same as `^D'.
  430. X  .lp l
  431. X! loot a box on the floor.  Same as ``#loot''.
  432. X  .lp N
  433. X! name an object or type of object.  Same as ``#name''.
  434. X  .lp u
  435. X! untrap a trapped object or door.  Same as ``#untrap''.
  436. X  
  437. X  .hn 1
  438. X  Rooms and corridors
  439. X--- 500,523 ----
  440. X  commands.  You may obtain a list of them by entering `?'.  What
  441. X  extended commands are available depend on what features the game was
  442. X  compiled with.  Most extended commands are used only under limited
  443. X! circumstances. Note that if your keyboard has a meta key (that is, one which
  444. X! when pressed in combination with another key modified it by turning on
  445. X! the 'meta' or 0x80 bit) these extended commands can be invoked by meta-ing the
  446. X! first letter of the command.
  447. X  .pg
  448. X  If the
  449. X  .op number_pad
  450. X  option is on, some additional letter commands are available:
  451. X  .lp j
  452. X! jump to another location.  Same as ``#jump'' or meta-j.
  453. X  .lp k
  454. X  kick something (usually a door).  Same as `^D'.
  455. X  .lp l
  456. X! loot a box on the floor.  Same as ``#loot'' or meta-l.
  457. X  .lp N
  458. X! name an object or type of object.  Same as ``#name'' or meta-n.
  459. X  .lp u
  460. X! untrap a trapped object or door.  Same as ``#untrap'' or meta-u.
  461. X  
  462. X  .hn 1
  463. X  Rooms and corridors
  464. X***************
  465. X*** 836,846 ****
  466. X  .pg
  467. X  You may encounter chests or boxes in your travels.  These can be
  468. X  opened with the ``#loot'' extended command when they are on the floor,
  469. X! or with the `a' (apply) command when you are carrying one.
  470. X! Chests are unwieldy objects, and must be set down to be unlocked
  471. X! (which can be accomplished by kicking them,
  472. X! using a key or lock picking tool with the `a' (apply) command, or
  473. X! by using a weapon to force the lock with the ``#force'' extended command).
  474. X  .pg
  475. X  Some chests are trapped, causing nasty things to happen when you
  476. X  unlock or open them.  You can check for and try to deactivate traps
  477. X--- 839,851 ----
  478. X  .pg
  479. X  You may encounter chests or boxes in your travels.  These can be
  480. X  opened with the ``#loot'' extended command when they are on the floor,
  481. X! or with the `a' (apply) command when you are carrying one.  However,
  482. X! chests are often locked, and require you to either use a key to unlock
  483. X! it, a tool to pick the lock, or to break it open with brute force.
  484. X! Chests are unwieldy objects, and must be set down to be unlocked (by
  485. X! kicking them, using a key or lock picking tool with the `a' (apply)
  486. X! command, or by using a weapon to force the lock with the ``#force''
  487. X! extended command).
  488. X  .pg
  489. X  Some chests are trapped, causing nasty things to happen when you
  490. X  unlock or open them.  You can check for and try to deactivate traps
  491. X***************
  492. X*** 969,975 ****
  493. X  set.  If it doesn't work, your terminal may not support alternate
  494. X  character sets, or the termcap entry for your terminal doesn't have
  495. X  the appropriate escape sequences.  For the record, the sequences to
  496. X! add to the termcap entry are ``:as=^O:ae=^N:ti=\\E)0:''.
  497. X  
  498. X  The order of the symbols is:  solid rock, vertical wall, horizontal
  499. X  wall, upper left corner, upper right corner, lower left corner, lower
  500. X--- 974,980 ----
  501. X  set.  If it doesn't work, your terminal may not support alternate
  502. X  character sets, or the termcap entry for your terminal doesn't have
  503. X  the appropriate escape sequences.  For the record, the sequences to
  504. X! add to the termcap entry are ``:as=^N:ae=^O:ti=\\E)0:''.
  505. X  
  506. X  The order of the symbols is:  solid rock, vertical wall, horizontal
  507. X  wall, upper left corner, upper right corner, lower left corner, lower
  508. X***************
  509. X*** 1119,1124 ****
  510. X--- 1124,1131 ----
  511. X  .pg
  512. X  \fBEric R. Smith\fP ported NetHack 3.0 to the Atari.
  513. X  .pg
  514. X+ \fBTimo Hakulinen\fP ported NetHack 3.0 to OS/2.
  515. X+ .pg
  516. X  The following folks have made significant contributions to the playability
  517. X  of the game:
  518. X  
  519. X***************
  520. X*** 1126,1138 ****
  521. X  .TS S
  522. X  center;
  523. X  c c c.
  524. X! Tom Almy    Eric Hendrickson    Izchak Miller
  525. X! Ken Arromdee    Bruce Holloway        Gil Neiger
  526. X! Eric Backus    Richard P. Hughey    Eric S. Raymond
  527. X! John S. Bien    Greg Laskin        John Rupley
  528. X! Ralf Brown    Steve Linhart        Kevin Sweet
  529. X! Jean-Christophe Collet    Roland McGrath    Scott R. Turner
  530. X! Steve Creps    Bruce Mewborne        Janet Walz
  531. X  .TE
  532. X  .ed
  533. X  
  534. X--- 1133,1146 ----
  535. X  .TS S
  536. X  center;
  537. X  c c c.
  538. X! Tom Almy    Bruce Holloway    Izchak Miller
  539. X! Ken Arromdee    Richard P. Hughey    Gil Neiger
  540. X! Eric Backus    Del Lamb    Eric S. Raymond
  541. X! John S. Bien    Greg Laskin    John Rupley
  542. X! Ralf Brown    Steve Linhart    Kevin Sweet
  543. X! Jean-Christophe Collet    Benson I. Margulies    Scott R. Turner
  544. X! Steve Creps    Roland McGrath    Janet Walz
  545. X! Eric Hendrickson    Bruce Mewborne
  546. X  .TE
  547. X  .ed
  548. X  
  549. X*** auxil/Old/Makefile.auxil    Wed Aug 16 12:03:10 1989
  550. X--- auxil/Makefile.auxil    Wed Aug 16 11:39:13 1989
  551. X***************
  552. X*** 24,26 ****
  553. X--- 24,29 ----
  554. X      ../src/lev_comp castle.des
  555. X      ../src/lev_comp endgame.des
  556. X      ../src/lev_comp tower.des
  557. X+ 
  558. X+ spotless:
  559. X+     -rm -f Guidebook data rumors castle endgame tower1 tower2 tower3
  560. X*** auxil/Old/help    Wed Aug 16 12:04:08 1989
  561. X--- auxil/help    Tue Aug 15 22:59:07 1989
  562. X***************
  563. X*** 139,145 ****
  564. X          the commands you can use with "#" type "#?".  The extended
  565. X          commands you can use depends upon what options the game was
  566. X          compiled with, along with your class and what type of monster
  567. X!         you most closely resemble at a given moment.
  568. X  
  569. X      If the "number_pad" option is on, some additional letter commands
  570. X      are available:
  571. X--- 139,149 ----
  572. X          the commands you can use with "#" type "#?".  The extended
  573. X          commands you can use depends upon what options the game was
  574. X          compiled with, along with your class and what type of monster
  575. X!         you most closely resemble at a given moment. If your keyboard
  576. X!         has a meta key (that is, one which when pressed in combination
  577. X!         with another key modified it by turning on the 'meta' or 0x80
  578. X!         bit) these extended commands can be invoked by meta-ing the
  579. X!         first letter of the command.
  580. X  
  581. X      If the "number_pad" option is on, some additional letter commands
  582. X      are available:
  583. X*** auxil/Old/hh    Wed Aug 16 12:04:20 1989
  584. X--- auxil/hh    Tue Aug 15 22:59:11 1989
  585. X***************
  586. X*** 27,33 ****
  587. X  
  588. X  Game commands:
  589. X  ^T    'port    teleport (if you can)
  590. X! ^D    kick    kick a door
  591. X  a    apply    apply or use a tool (pick-axe, key, camera, etc.)
  592. X  A    remove    take off all armor
  593. X  c    close    close a door
  594. X--- 27,33 ----
  595. X  
  596. X  Game commands:
  597. X  ^T    'port    teleport (if you can)
  598. X! ^D    kick    kick (a door, or something else)
  599. X  a    apply    apply or use a tool (pick-axe, key, camera, etc.)
  600. X  A    remove    take off all armor
  601. X  c    close    close a door
  602. X***************
  603. X*** 73,75 ****
  604. X--- 73,78 ----
  605. X  l    loot    loot a box on the floor
  606. X  N    name    name an object or type of object
  607. X  u    untrap    untrap a trapped object
  608. X+ 
  609. X+ If your keyboard has a meta key, 'jump' 'loot', 'name' and 'untrap' are
  610. X+ available as M-j, M-l, M-N or M-u respectively.
  611. X*** auxil/Old/history    Wed Aug 16 12:04:32 1989
  612. X--- auxil/history    Wed Aug 16 10:15:34 1989
  613. X***************
  614. X*** 20,32 ****
  615. X  coordinated a cast of thousands in enhancing and debugging NetHack 1.4 and 
  616. X  released NetHack versions 2.2 and 2.3.  Later, he coordinated a major rewrite
  617. X  of the game, heading a team which included Ken Arromdee, Jean-Christophe
  618. X! Collet, Steve Creps, Eric Hendrickson, Izchak Miller, John Rupley, Mike
  619. X! Threepoint, and Janet Walz, to produce NetHack 3.0. 
  620. X  
  621. X  Olaf Seibert ported NetHack 2.3 and 3.0 to the Amiga.
  622. X  
  623. X  Eric R. Smith ported NetHack 3.0 to the Atari.
  624. X  
  625. X   
  626. X  From time to time, some depraved individual out there in netland sends a
  627. X  particularly intriguing modification to help out with the game.  The Gods of
  628. X--- 20,34 ----
  629. X  coordinated a cast of thousands in enhancing and debugging NetHack 1.4 and 
  630. X  released NetHack versions 2.2 and 2.3.  Later, he coordinated a major rewrite
  631. X  of the game, heading a team which included Ken Arromdee, Jean-Christophe
  632. X! Collet, Steve Creps, Eric Hendrickson, Izchak Miller, Eric S. Raymond, John 
  633. X! Rupley, Mike Threepoint, and Janet Walz, to produce NetHack 3.0. 
  634. X  
  635. X  Olaf Seibert ported NetHack 2.3 and 3.0 to the Amiga.
  636. X  
  637. X  Eric R. Smith ported NetHack 3.0 to the Atari.
  638. X  
  639. X+ Timo Hakulinen ported NetHack 3.0 to OS/2.
  640. X+ 
  641. X   
  642. X  From time to time, some depraved individual out there in netland sends a
  643. X  particularly intriguing modification to help out with the game.  The Gods of
  644. X***************
  645. X*** 33,44 ****
  646. X  the Dungeon sometimes make note of the names of the worst of these miscreants
  647. X  in this, the list of Dungeoneers:
  648. X  
  649. X!     Tom Almy                  Eric Hendrickson       Izchak Miller
  650. X!     Ken Arromdee              Bruce Holloway         Gil Neiger
  651. X!     Eric Backus               Richard P. Hughey      Eric S. Raymond
  652. X      John S. Bien              Greg Laskin            John Rupley
  653. X      Ralf Brown                Steve Linhart          Kevin Sweet
  654. X!     Jean-Christophe Collet    Roland McGrath         Scott R. Turner
  655. X!     Steve Creps               Bruce Mewborne         Janet Walz
  656. X!     and...                    The Unknown Hacker
  657. X! 
  658. X--- 35,45 ----
  659. X  the Dungeon sometimes make note of the names of the worst of these miscreants
  660. X  in this, the list of Dungeoneers:
  661. X  
  662. X!     Tom Almy                  Bruce Holloway         Izchak Miller
  663. X!     Ken Arromdee              Richard P. Hughey      Gil Neiger
  664. X!     Eric Backus               Del Lamb               Eric S. Raymond
  665. X      John S. Bien              Greg Laskin            John Rupley
  666. X      Ralf Brown                Steve Linhart          Kevin Sweet
  667. X!     Jean-Christophe Collet    Benson I. Margulies    Scott R. Turner
  668. X!     Steve Creps               Roland McGrath         Janet Walz
  669. X!     Eric Hendrickson          Bruce Mewborne
  670. X*** auxil/Old/lev_comp.6    Wed Aug 16 12:04:49 1989
  671. X--- auxil/lev_comp.6    Tue Aug  8 20:19:18 1989
  672. X***************
  673. X*** 1,4 ****
  674. X! .TH LEV_COMP 6 "5 JULY 1989"
  675. X  .UC 4
  676. X  .SH NAME
  677. X  lev_comp \- NetHack special levels compiler
  678. X--- 1,4 ----
  679. X! .TH LEV_COMP 6 "5 July 1989"
  680. X  .UC 4
  681. X  .SH NAME
  682. X  lev_comp \- NetHack special levels compiler
  683. X***************
  684. X*** 7,27 ****
  685. X  [
  686. X  .I files
  687. X  ]
  688. X  .SH DESCRIPTION
  689. X  .PP
  690. X  .I Lev_comp
  691. X! is a special level compiler for NetHack version 3.0 and higher.
  692. X! It takes description files as arguments and produces level files that can be
  693. X! loaded by NetHack at runtime.
  694. X! If no arguments are given, it reads standard input.
  695. X  .PP
  696. X! The purpose of this tool is to provide NetHack administrators and implementors
  697. X! with a convenient way for adding special levels to the game,
  698. X! or modifying existing ones,
  699. X! without having to recompile the entire world.
  700. X! At this time, the special levels code is not fully implemented,
  701. X! as the decision to load the special levels is hard-coded in the game.
  702. X! In a future release, it is expected to be a run-time decision.
  703. X  .SH GRAMMAR
  704. X  .PP
  705. X  .LP
  706. X--- 7,28 ----
  707. X  [
  708. X  .I files
  709. X  ]
  710. X+ .PP
  711. X+ If no arguments are given, it reads standard input.
  712. X  .SH DESCRIPTION
  713. X  .PP
  714. X  .I Lev_comp
  715. X! is a special level compiler for NetHack version 3.0 and higher.  It
  716. X! takes description files as arguments and produces level files that can
  717. X! be loaded by NetHack at runtime.
  718. X  .PP
  719. X! The purpose of this tool is to provide NetHack administrators and
  720. X! implementors with a convenient way for adding special levels to the
  721. X! game, or modifying existing ones, without having to recompile the
  722. X! entire world.  At this time, the special levels code is not fully
  723. X! implemented, as the decision to load the special levels is hard-coded
  724. X! in the game.  In a future release, it is expected to be a run-time
  725. X! decision.
  726. X  .SH GRAMMAR
  727. X  .PP
  728. X  .LP
  729. X***************
  730. X*** 183,211 ****
  731. X  MAZE : "fortress"
  732. X  GEOMETRY : center , center
  733. X  MAP
  734. X! }}}}}}}}}}}}}
  735. X! }}}|-----|}}}
  736. X! }}}|.....|}}}
  737. X! }|--.....--|}
  738. X! }|.........|}
  739. X! }|--.....--|}
  740. X! }}}|.....|}}}
  741. X! }}}|-----|}}}
  742. X! }}}}}}}}}}}}}
  743. X  ENDMAP
  744. X! MONSTER: '@',"wizard of yendor", (6,4)
  745. X  # a random dragon somewhere
  746. X  MONSTER: 'D', random, random
  747. X! # a random trap in the EAST part
  748. X! TRAP: random, (10,4)
  749. X  .fi
  750. X  .PP
  751. X  This example will produce a file named "fortress" that can be integrated into
  752. X! one of the numerous mazes of the game...
  753. X  
  754. X  .SH AUTHOR
  755. X  .PP
  756. X! Jean-christophe Collet.
  757. X  .SH BUGS
  758. X  .PP
  759. X  Probably infinite.
  760. X--- 184,222 ----
  761. X  MAZE : "fortress"
  762. X  GEOMETRY : center , center
  763. X  MAP
  764. X! }}}}}}}}}
  765. X! }}}|-|}}}
  766. X! }}|-.-|}}
  767. X! }|-...-|}
  768. X! }|.....|}
  769. X! }|-...-|}
  770. X! }}|-.-|}}
  771. X! }}}|-|}}}
  772. X! }}}}}}}}}
  773. X  ENDMAP
  774. X! MONSTER: '@', "Wizard of Yendor", (4,4)
  775. X! OBJECT: '"', "Amulet of Yendor", (4,4)
  776. X! # a hell hound flanking the Wiz on a random side
  777. X! RANDOM_PLACES: (4,3), (4,5), (3,4), (5,4)
  778. X! MONSTER: 'd', "hell hound", place[0]
  779. X! # a chest on another random side
  780. X! OBJECT: '(', "chest", place[1]
  781. X  # a random dragon somewhere
  782. X  MONSTER: 'D', random, random
  783. X! # a random trap in the EAST end
  784. X! TRAP: random, (6,4)
  785. X! # an electric eel below the SOUTH end
  786. X! MONSTER: ';', "electric eel", (4,8)
  787. X! # make the walls non-diggable
  788. X! NON_DIGGABLE: (0,0,8,8)
  789. X  .fi
  790. X  .PP
  791. X  This example will produce a file named "fortress" that can be integrated into
  792. X! one of the numerous mazes of the game.
  793. X  
  794. X  .SH AUTHOR
  795. X  .PP
  796. X! Jean-Christophe Collet.
  797. X  .SH BUGS
  798. X  .PP
  799. X  Probably infinite.
  800. X*** auxil/Old/nethack.sh    Wed Aug 16 12:05:31 1989
  801. X--- auxil/nethack.sh    Fri Aug 11 14:43:01 1989
  802. X***************
  803. X*** 1,8 ****
  804. X  #!/bin/sh
  805. X! #    SCCS Id: @(#)nethack.sh    1.4    87/08/08
  806. X  HACKDIR=/usr/games/lib/nethackdir
  807. X  HACK=$HACKDIR/nethack
  808. X  MAXNROFPLAYERS=4
  809. X  
  810. X  cd $HACKDIR
  811. X  case $1 in
  812. X--- 1,35 ----
  813. X  #!/bin/sh
  814. X! #    SCCS Id: @(#)nethack.sh    3.0    89/08/11
  815. X! 
  816. X  HACKDIR=/usr/games/lib/nethackdir
  817. X  HACK=$HACKDIR/nethack
  818. X  MAXNROFPLAYERS=4
  819. X+ 
  820. X+ # see if we can find the full path name of PAGER, so help files work properly
  821. X+ # ideas from brian@radio.astro.utoronto.ca
  822. X+ if test $PAGER
  823. X+ then
  824. X+     if test ! -x $PAGER
  825. X+     then
  826. X+         IFS=:
  827. X+         for i in $PATH
  828. X+         do
  829. X+             if test -x $i/$PAGER
  830. X+             then
  831. X+                 PAGER=$i/$PAGER
  832. X+                 export PAGER
  833. X+                 break
  834. X+             fi
  835. X+         done
  836. X+         IFS='     '
  837. X+     fi
  838. X+     if test ! -x $PAGER
  839. X+     then
  840. X+         echo Cannot find $PAGER -- unsetting PAGER.
  841. X+         unset PAGER
  842. X+     fi
  843. X+ fi
  844. X+ 
  845. X  
  846. X  cd $HACKDIR
  847. X  case $1 in
  848. X*** auxil/Old/oracles    Wed Aug 16 12:05:51 1989
  849. X--- auxil/oracles    Wed Aug 16 10:19:56 1989
  850. X***************
  851. X*** 1,10 ****
  852. X! If thy wand hath run out of charges, thou mayest zap it again and again; though
  853. X! nothing will happen at first, thy persistence shall surely be rewarded, as
  854. X! one last charge shall be wrested from it!
  855. X  -----
  856. X! To complete thy quest, thou needest enter the infernal regions.  If thou hast
  857. X! not immunity to fire, such a trip will surely prove to be thy last; prepare
  858. X! thyself in advance.
  859. X  -----
  860. X  Though the shopkeepers be wary, thieves have nevertheless stolen much by using
  861. X  their digging wands to hasten exits through the pavement.
  862. X--- 1,10 ----
  863. X! If thy wand hath run out of charges, thou mayst zap it again and again; though
  864. X! naught will happen at first, verily, thy persistence shall be rewarded, as
  865. X! one last charge may yet be wrested from it!
  866. X  -----
  867. X! To complete thy quest, thou needs must enter the infernal regions.  If thou
  868. X! hast not immunity to fire, such a trip will surely prove to be thy last;
  869. X! prepare thyself in advance.
  870. X  -----
  871. X  Though the shopkeepers be wary, thieves have nevertheless stolen much by using
  872. X  their digging wands to hasten exits through the pavement.
  873. X***************
  874. X*** 13,21 ****
  875. X  that thou canst prevent this by, while in a confused state, reading the magical
  876. X  parchments which normally are used to cause their enchantment.
  877. X  -----
  878. X! Behold the cockatrice, a mighty creature which can petrify anything normal it
  879. X! comes across--save the wise adventurer who eats a dead lizard or blob of acid
  880. X! when he feels himself slowly turning to stone.
  881. X  -----
  882. X  While some armor protects against magical attacks, few types compare to the
  883. X  items which come from the elven regions, though iron or crystalline plate
  884. X--- 13,22 ----
  885. X  that thou canst prevent this by, while in a confused state, reading the magical
  886. X  parchments which normally are used to cause their enchantment.
  887. X  -----
  888. X! Behold the cockatrice, whose diminutive stature belies its hidden might.  The
  889. X! cockatrice can petrify any ordinary being it contacts--save those wise
  890. X! adventurers who eat a dead lizard or blob of acid when they feel themselves
  891. X! slowly turning to stone.
  892. X  -----
  893. X  While some armor protects against magical attacks, few types compare to the
  894. X  items which come from the elven regions, though iron or crystalline plate
  895. X***************
  896. X*** 33,43 ****
  897. X  around on the level.  Daring adventurers have also performed the same feat
  898. X  sans need for scrolls or potions by stepping on the correct type of trap.
  899. X  -----
  900. X! Most all adventurers who come this way hope to pass the medusa.  To do this,
  901. X! the best advice is to keep thine eyes blindfolded and to cause the creature
  902. X! to espy its own reflection in a mirror.
  903. X  -----
  904. X! And when it is written, "ad aerarium," diligent searching will often reveal
  905. X  the way to a trap which sends one to the Magic Memory Vault, where the riches
  906. X  of Croesus are stored; however, escaping from the vault with its gold is much
  907. X  harder than getting in.
  908. X--- 34,44 ----
  909. X  around on the level.  Daring adventurers have also performed the same feat
  910. X  sans need for scrolls or potions by stepping on the correct type of trap.
  911. X  -----
  912. X! Almost all adventurers who come this way hope to pass the dread Medusa.  To
  913. X! do this, the best advice is to keep thine eyes blindfolded and to cause the
  914. X! creature to espy its own reflection in a mirror.
  915. X  -----
  916. X! And where it is written "ad aerarium", diligent searching will often reveal
  917. X  the way to a trap which sends one to the Magic Memory Vault, where the riches
  918. X  of Croesus are stored; however, escaping from the vault with its gold is much
  919. X  harder than getting in.
  920. X***************
  921. X*** 44,61 ****
  922. X  -----
  923. X  It is well known that wily shopkeepers doth raise their prices whene'er they
  924. X  espy the garish apparel of the approaching tourist or the countenance of a
  925. X! disfavored patron.  Prices favor the gentle of manner and the fair of face.
  926. X! The boor mayst expect unprofitable transactions.
  927. X  -----
  928. X  The cliche of the kitchen sink swallowing any unfortunate rings that contact
  929. X! its pernicious surface doth reflect greater truth as many homilies, yet
  930. X  even so, few hath developed the skill to identify enchanted rings by the
  931. X  transfigurations effected upon the voracious device's frame.
  932. X  -----
  933. X  The meat of enchanted creatures will ofttimes convey magical properties
  934. X  unto the consumer.  A fresh corpse of floating eye doth fetch a high
  935. X! price among wizards for its utility for to develop Telepathy, by which
  936. X! the sightless mayst locate surrounding minds.
  937. X  -----
  938. X  The detection of blessings and curses is in the domain of the gods.  They will
  939. X  make this information available to mortals who request it at their places of
  940. X--- 45,62 ----
  941. X  -----
  942. X  It is well known that wily shopkeepers doth raise their prices whene'er they
  943. X  espy the garish apparel of the approaching tourist or the countenance of a
  944. X! disfavored patron.  They favor the gentle of manner and the fair of face.
  945. X! The boor may expect unprofitable transactions.
  946. X  -----
  947. X  The cliche of the kitchen sink swallowing any unfortunate rings that contact
  948. X! its pernicious surface reflecteth greater truth than many homilies, yet
  949. X  even so, few hath developed the skill to identify enchanted rings by the
  950. X  transfigurations effected upon the voracious device's frame.
  951. X  -----
  952. X  The meat of enchanted creatures will ofttimes convey magical properties
  953. X  unto the consumer.  A fresh corpse of floating eye doth fetch a high
  954. X! price among wizards for its utility in conferring Telepathy, by which
  955. X! the sightless may locate surrounding minds.
  956. X  -----
  957. X  The detection of blessings and curses is in the domain of the gods.  They will
  958. X  make this information available to mortals who request it at their places of
  959. X*** auxil/Old/rumors.fal    Wed Aug 16 12:06:04 1989
  960. X--- auxil/rumors.fal    Fri Aug  4 18:36:27 1989
  961. X***************
  962. X*** 54,60 ****
  963. X  Engrave your wishes with a wand of wishing.
  964. X  Eventually you will come to admire the swift elegance of a retreating nymph.
  965. X  Ever heard hissing outside?  I *knew* you hadn't!
  966. X! Ever lifted a dead dragon?
  967. X  Ever seen your weapon glow plaid?
  968. X  Ever seen a leocrotta dancing the tengu?
  969. X  Ever tamed a shopkeeper?
  970. X--- 54,60 ----
  971. X  Engrave your wishes with a wand of wishing.
  972. X  Eventually you will come to admire the swift elegance of a retreating nymph.
  973. X  Ever heard hissing outside?  I *knew* you hadn't!
  974. X! Ever lifted a dragon corpse?
  975. X  Ever seen your weapon glow plaid?
  976. X  Ever seen a leocrotta dancing the tengu?
  977. X  Ever tamed a shopkeeper?
  978. X***************
  979. X*** 108,113 ****
  980. X--- 108,114 ----
  981. X  Never play leapfrog with a unicorn.
  982. X  Never step on a cursed engraving.
  983. X  Never swim with a camera:  there's nothing to take pictures of.
  984. X+ Never teach your pet rust monster to fetch.
  985. X  Never trust a random generator in magic fields.
  986. X  Never use a wand of death.
  987. X  No level contains two shops.  The maze is no level.  So...
  988. X*** include/Old/amiconf.h    Wed Aug 16 14:03:39 1989
  989. X--- include/amiconf.h    Fri Aug 11 17:13:35 1989
  990. X***************
  991. X*** 27,33 ****
  992. X   *  Configurable Amiga options:
  993. X   */
  994. X  
  995. X! #define MSDOSCOLOR              /* Use colored monsters and objects */
  996. X  #define HACKFONT                /* Use special hack.font */
  997. X  #define SHELL                   /* Have a shell escape command (!) */
  998. X  #define MAIL                    /* Get mail at unexpected occasions */
  999. X--- 27,33 ----
  1000. X   *  Configurable Amiga options:
  1001. X   */
  1002. X  
  1003. X! #define TEXTCOLOR              /* Use colored monsters and objects */
  1004. X  #define HACKFONT                /* Use special hack.font */
  1005. X  #define SHELL                   /* Have a shell escape command (!) */
  1006. X  #define MAIL                    /* Get mail at unexpected occasions */
  1007. X*** include/Old/config.h    Wed Aug 16 14:04:12 1989
  1008. X--- include/config.h    Tue Aug 15 21:58:18 1989
  1009. X***************
  1010. X*** 14,24 ****
  1011. X  
  1012. X  #define    UNIX        /* delete if no fork(), exec() available */
  1013. X  
  1014. X! #ifdef __MSDOS__    /* Turbo C auto-defines __MSDOS__, others MSDOS */
  1015. X! #define MSDOS         /* define for MS-DOS (actually defined by compiler) */
  1016. X  #else
  1017. X! /* # define MSDOS    /* define for MS-DOS and most other micros */
  1018. X! /* # define AMIGA    /* define for Commodore-Amiga */
  1019. X  /* #define TOS        /* for Atari 520/1040 */
  1020. X  
  1021. X  /* #define STUPID    /* avoid some complicated expressions if
  1022. X--- 14,24 ----
  1023. X  
  1024. X  #define    UNIX        /* delete if no fork(), exec() available */
  1025. X  
  1026. X! #ifdef __MSDOS__    /* Turbo C auto-defines __MSDOS__, MSC defines MSDOS */
  1027. X! #define MSDOS        /* define for MS-DOS (in case compiler doesn't) */
  1028. X  #else
  1029. X! /* #define MSDOS    /* define for MS-DOS and most other micros */
  1030. X! /* #define AMIGA    /* define for Commodore-Amiga */
  1031. X  /* #define TOS        /* for Atari 520/1040 */
  1032. X  
  1033. X  /* #define STUPID    /* avoid some complicated expressions if
  1034. X*** include/Old/decl.h    Wed Aug 16 14:04:38 1989
  1035. X--- include/decl.h    Tue Aug 15 21:58:26 1989
  1036. X***************
  1037. X*** 120,127 ****
  1038. X  E int in_doagain;
  1039. X  #endif
  1040. X  
  1041. X! #ifdef MSDOSCOLOR
  1042. X! E char *HI_RED, *HI_YELLOW, *HI_GREEN, *HI_BLUE, *HI_WHITE; /* termcap.c */
  1043. X  #endif
  1044. X  
  1045. X  #ifndef OBJ_H
  1046. X--- 120,134 ----
  1047. X  E int in_doagain;
  1048. X  #endif
  1049. X  
  1050. X! #ifdef TEXTCOLOR
  1051. X! #define RED        1
  1052. X! #define GREEN        2
  1053. X! #define YELLOW        3
  1054. X! #define BLUE        4
  1055. X! #define MAGENTA     5
  1056. X! #define CYAN        6
  1057. X! #define WHITE        7
  1058. X! E char *HI_COLOR[8];    /* termcap.c */
  1059. X  #endif
  1060. X  
  1061. X  #ifndef OBJ_H
  1062. X*** include/Old/extern.h    Wed Aug 16 14:05:24 1989
  1063. X--- include/extern.h    Wed Aug 16 10:16:11 1989
  1064. X***************
  1065. X*** 76,81 ****
  1066. X--- 76,82 ----
  1067. X  
  1068. X  /* ### cmd.c ### */
  1069. X  
  1070. X+ E void reset_occupations ();
  1071. X  E void set_occupation P((int(*)(),char *,int));
  1072. X  #ifdef REDO
  1073. X  E char pgetchar();
  1074. X***************
  1075. X*** 189,195 ****
  1076. X--- 190,198 ----
  1077. X  E void glibr();
  1078. X  E struct obj *some_armor();
  1079. X  E void corrode_armor();
  1080. X+ E void reset_remarm();
  1081. X  E int doddoremarm();
  1082. X+ E int destroy_arm P((struct obj *));
  1083. X  E void adj_abon P((struct obj *,schar));
  1084. X  
  1085. X  /* ### dog.c ### */
  1086. X***************
  1087. X*** 240,246 ****
  1088. X  E int done2();
  1089. X  E void done_in_by P((struct monst *));
  1090. X  E void panic P((char *,...));
  1091. X! E void done P((char *));
  1092. X  E void clearlocks();
  1093. X  #ifdef NOSAVEONHANGUP
  1094. X  E void hangup();
  1095. X--- 243,249 ----
  1096. X  E int done2();
  1097. X  E void done_in_by P((struct monst *));
  1098. X  E void panic P((char *,...));
  1099. X! E void done P((int));
  1100. X  E void clearlocks();
  1101. X  #ifdef NOSAVEONHANGUP
  1102. X  E void hangup();
  1103. X***************
  1104. X*** 322,329 ****
  1105. X  E int weight_cap();
  1106. X  E int inv_weight();
  1107. X  E int inv_cnt();
  1108. X! E int little_to_big P((int));
  1109. X! E int big_to_little P((int));     
  1110. X  #ifdef STUPID_CPP    /* otherwise these functions are macros in hack.h */
  1111. X  E char yn();
  1112. X  E char ynq();
  1113. X--- 325,331 ----
  1114. X  E int weight_cap();
  1115. X  E int inv_weight();
  1116. X  E int inv_cnt();
  1117. X! E int identify P((struct obj *));
  1118. X  #ifdef STUPID_CPP    /* otherwise these functions are macros in hack.h */
  1119. X  E char yn();
  1120. X  E char ynq();
  1121. X***************
  1122. X*** 380,385 ****
  1123. X--- 382,388 ----
  1124. X  
  1125. X  /* ### lock.c ### */
  1126. X  
  1127. X+ E void reset_pick();
  1128. X  E int pick_lock P((struct obj *));
  1129. X  E int doforce();
  1130. X  E int boxlock P((struct obj *,struct obj *));
  1131. X***************
  1132. X*** 434,448 ****
  1133. X  /* ### mhitu.c ### */
  1134. X  
  1135. X  #ifdef POLYSELF
  1136. X- E boolean incompatible P((struct monst *));
  1137. X  E struct monst *cloneu();
  1138. X  #endif
  1139. X- E boolean is_nymph P((struct monst *));
  1140. X- E boolean sp_melee P((struct monst *));
  1141. X  E int mattacku P((struct monst *));
  1142. X  E void mdamageu P((struct monst *,int));
  1143. X  #ifdef SEDUCE
  1144. X! E void doseduce P((struct monst *));
  1145. X  #endif
  1146. X  
  1147. X  /* ### mklev.c ### */
  1148. X--- 437,449 ----
  1149. X  /* ### mhitu.c ### */
  1150. X  
  1151. X  #ifdef POLYSELF
  1152. X  E struct monst *cloneu();
  1153. X  #endif
  1154. X  E int mattacku P((struct monst *));
  1155. X  E void mdamageu P((struct monst *,int));
  1156. X+ E int could_seduce P((struct monst *,struct monst *,struct attack *));
  1157. X  #ifdef SEDUCE
  1158. X! E int doseduce P((struct monst *));
  1159. X  #endif
  1160. X  
  1161. X  /* ### mklev.c ### */
  1162. X***************
  1163. X*** 564,572 ****
  1164. X--- 565,576 ----
  1165. X  E int gender P((struct monst *));
  1166. X  E boolean levl_follower P((struct monst *));
  1167. X  E struct permonst *player_mon();
  1168. X+ E int little_to_big P((int));
  1169. X+ E int big_to_little P((int));     
  1170. X  
  1171. X  /* ### monmove.c ### */
  1172. X  
  1173. X+ E boolean mb_trapped P((struct monst *));
  1174. X  E int dochugw P((struct monst *));
  1175. X  E boolean onscary P((int,int,struct monst *));
  1176. X  E int dochug P((struct monst *));
  1177. X***************
  1178. X*** 582,587 ****
  1179. X--- 586,592 ----
  1180. X  E void flushout();
  1181. X  E int tgetch();
  1182. X  E int dosh();
  1183. X+ # ifdef DGK
  1184. X  E long freediskspace P((char *));
  1185. X  E long filesize P((char *));
  1186. X  E void eraseall P((char *,char *));
  1187. X***************
  1188. X*** 589,594 ****
  1189. X--- 594,600 ----
  1190. X  E void playwoRAMdisk();
  1191. X  E int saveDiskPrompt P((int));
  1192. X  E void gameDiskPrompt();
  1193. X+ # endif
  1194. X  E void read_config_file();
  1195. X  E void set_lock_and_bones();
  1196. X  E void append_slash P((char *));
  1197. X***************
  1198. X*** 595,605 ****
  1199. X--- 601,622 ----
  1200. X  E void getreturn P((char *));
  1201. X  E void msmsg P((char *,...));
  1202. X  E void chdrive P((char *));
  1203. X+ # ifndef TOS
  1204. X  E void disable_ctrlP();
  1205. X  E void enable_ctrlP();
  1206. X+ # endif
  1207. X+ # ifdef DGK
  1208. X  E FILE *fopenp P((char *,char *));
  1209. X+ # endif
  1210. X  E void msexit P((int));
  1211. X+ # ifdef DGK
  1212. X+ E void get_scr_size();
  1213. X+ # endif
  1214. X  #endif /* MSDOS */
  1215. X+ #ifdef TOS
  1216. X+ E int _copyfile P((int, int));
  1217. X+ E int kbhit();
  1218. X+ #endif /* TOS */
  1219. X  
  1220. X  /* ### mthrowu.c ### */
  1221. X  
  1222. X***************
  1223. X*** 681,687 ****
  1224. X  E void askname();
  1225. X  E void impossible P((char *,...));
  1226. X  #ifdef CHDIR
  1227. X! E void chdirx P((char *,char));
  1228. X  #endif /* CHDIR */
  1229. X  E void stop_occupation();
  1230. X  #endif /* MSDOS */
  1231. X--- 698,704 ----
  1232. X  E void askname();
  1233. X  E void impossible P((char *,...));
  1234. X  #ifdef CHDIR
  1235. X! E void chdirx P((char *,boolean));
  1236. X  #endif /* CHDIR */
  1237. X  E void stop_occupation();
  1238. X  #endif /* MSDOS */
  1239. X***************
  1240. X*** 845,856 ****
  1241. X  
  1242. X  E int doread();
  1243. X  E int seffects P((struct obj *));
  1244. X- E int identify P((struct obj *));
  1245. X  E void litroom P((boolean));
  1246. X  E void do_genocide P((int));
  1247. X  E void do_mapping();
  1248. X  E void do_vicinity_map();
  1249. X- E int destroy_arm P((struct obj *));
  1250. X  E int gold_detect P((struct obj *));
  1251. X  E int food_detect P((struct obj *));
  1252. X  E void punish P((struct obj *));
  1253. X--- 862,871 ----
  1254. X***************
  1255. X*** 1043,1048 ****
  1256. X--- 1058,1064 ----
  1257. X  E void cmore P((char *));
  1258. X  E void clrlin();
  1259. X  E void pline P((const char *,...));
  1260. X+ E void Norep P((const char *,...));
  1261. X  E void You P((const char *,...));
  1262. X  E void Your P((const char *,...));
  1263. X  E void putsym P((char));
  1264. X***************
  1265. X*** 1099,1107 ****
  1266. X  
  1267. X  E struct monst *clone_mon P((struct monst *));
  1268. X  E boolean special_case P((struct monst *));
  1269. X  E boolean attack P((struct monst *));
  1270. X  E boolean hmon P((struct monst *,struct obj *,int));
  1271. X! E int passive P((struct monst *,boolean,int));
  1272. X  
  1273. X  /* ### unixmain.c ### */
  1274. X  
  1275. X--- 1115,1127 ----
  1276. X  
  1277. X  E struct monst *clone_mon P((struct monst *));
  1278. X  E boolean special_case P((struct monst *));
  1279. X+ E schar find_roll_to_hit P((struct monst *));
  1280. X  E boolean attack P((struct monst *));
  1281. X  E boolean hmon P((struct monst *,struct obj *,int));
  1282. X! E int damageum P((struct monst *, struct attack *));
  1283. X! E void missum P((struct monst *, struct attack *));
  1284. X! E int passive P((struct monst *,boolean,int,boolean));
  1285. X! E void stumble_onto_mimic P((struct monst *));
  1286. X  
  1287. X  /* ### unixmain.c ### */
  1288. X  
  1289. X*** include/Old/global.h    Wed Aug 16 14:06:34 1989
  1290. X--- include/global.h    Tue Aug 15 21:58:18 1989
  1291. X***************
  1292. X*** 9,15 ****
  1293. X  
  1294. X  
  1295. X  /* #define BETA        /* if a beta-test copy  [MRS] */
  1296. X! #define VERSION    "3.0e"    /* version number. */
  1297. X  
  1298. X  /*
  1299. X   * Files expected to exist in the playground directory.
  1300. X--- 9,15 ----
  1301. X  
  1302. X  
  1303. X  /* #define BETA        /* if a beta-test copy  [MRS] */
  1304. X! #define VERSION    "3.0f"    /* version number. */
  1305. X  
  1306. X  /*
  1307. X   * Files expected to exist in the playground directory.
  1308. X*** include/Old/hack.h    Wed Aug 16 14:06:59 1989
  1309. X--- include/hack.h    Tue Aug 15 21:58:27 1989
  1310. X***************
  1311. X*** 26,31 ****
  1312. X--- 26,50 ----
  1313. X  #define NULL  ((genericptr_t)0)
  1314. X  #define DUMMY { 0 }
  1315. X  
  1316. X+ /* this is the way the game ends */
  1317. X+ /* if these are rearranged, the arrays in end.c will need to be changed */
  1318. X+ #define DIED        0
  1319. X+ #define CHOKING     1
  1320. X+ #define POISONING    2
  1321. X+ #define STARVING    3
  1322. X+ #define DROWNING    4
  1323. X+ #define BURNING     5
  1324. X+ #define CRUSHING    6
  1325. X+ #define STONING     7
  1326. X+ #define GENOCIDED    8
  1327. X+ #define PANICKED    9
  1328. X+ #define TRICKED     10
  1329. X+ #define QUIT        11
  1330. X+ #define ESCAPED     12
  1331. X+ #ifdef ENDGAME
  1332. X+ #define ASCENDED    13
  1333. X+ #endif
  1334. X+ 
  1335. X  #ifndef DECL_H
  1336. X  #include "decl.h"
  1337. X  #endif
  1338. X*** include/Old/mondata.h    Wed Aug 16 14:08:14 1989
  1339. X--- include/mondata.h    Wed Aug  9 20:31:42 1989
  1340. X***************
  1341. X*** 77,84 ****
  1342. X  #define can_breathe(ptr)    attacktype(ptr, AT_BREA)
  1343. X  #define cantwield(ptr)        (nohands(ptr) || verysmall(ptr))
  1344. X  #define cantweararm(ptr)    (breakarm(ptr) || sliparm(ptr))
  1345. X- #define nolimbs(ptr)        (((ptr)->mflags2 & M2_NOLIMBS) != 0L)
  1346. X  #endif /* POLYSELF */
  1347. X  #define carnivorous(ptr)    (((ptr)->mflags2 & M2_CARNIVORE) != 0L)
  1348. X  #define herbivorous(ptr)    (((ptr)->mflags2 & M2_HERBIVORE) != 0L)
  1349. X  #define thick_skinned(ptr)    (((ptr)->mflags2 & M2_THICK_HIDE) != 0L)
  1350. X--- 77,84 ----
  1351. X  #define can_breathe(ptr)    attacktype(ptr, AT_BREA)
  1352. X  #define cantwield(ptr)        (nohands(ptr) || verysmall(ptr))
  1353. X  #define cantweararm(ptr)    (breakarm(ptr) || sliparm(ptr))
  1354. X  #endif /* POLYSELF */
  1355. X+ #define nolimbs(ptr)        (((ptr)->mflags2 & M2_NOLIMBS) != 0L)
  1356. X  #define carnivorous(ptr)    (((ptr)->mflags2 & M2_CARNIVORE) != 0L)
  1357. X  #define herbivorous(ptr)    (((ptr)->mflags2 & M2_HERBIVORE) != 0L)
  1358. X  #define thick_skinned(ptr)    (((ptr)->mflags2 & M2_THICK_HIDE) != 0L)
  1359. X*** include/Old/pcconf.h    Wed Aug 16 14:09:50 1989
  1360. X--- include/pcconf.h    Tue Aug 15 21:57:19 1989
  1361. X***************
  1362. X*** 6,11 ****
  1363. X--- 6,15 ----
  1364. X  #ifndef PCCONF_H
  1365. X  #define PCCONF_H
  1366. X  
  1367. X+ /* #define OS2        /* define for OS/2 (Timo Hakulinen) */
  1368. X+ /* #define OS2_CODEVIEW /* define for OS/2 CodeView debugger,
  1369. X+                otherwise path searches may fail (TH) */
  1370. X+ 
  1371. X  /*
  1372. X   *  The following options are configurable:
  1373. X   */
  1374. X***************
  1375. X*** 86,97 ****
  1376. X  #endif
  1377. X  
  1378. X  #ifndef TOS
  1379. X! #  define MSDOSCOLOR /* */
  1380. X  /* configurable colors */
  1381. X! #  define HI_MON  HI_RED    /* red slaps! */
  1382. X! #  define HI_OBJ  HI_GREEN
  1383. X! #  define HI_GOLD HI_YELLOW
  1384. X! #  define HI_ZAP  HI_BLUE    /* blue zaps! */
  1385. X  #endif
  1386. X  
  1387. X  #ifndef EXTERN_H
  1388. X--- 90,106 ----
  1389. X  #endif
  1390. X  
  1391. X  #ifndef TOS
  1392. X! #  define TEXTCOLOR /* */
  1393. X! #endif
  1394. X! 
  1395. X! #ifdef TEXTCOLOR
  1396. X  /* configurable colors */
  1397. X! #  define HI_MON    RED    /* red slaps! */
  1398. X! #  define HI_OBJ    MAGENTA
  1399. X! #  define HI_METAL    CYAN
  1400. X! #  define HI_ORGANIC    GREEN
  1401. X! #  define HI_GOLD    YELLOW
  1402. X! #  define HI_ZAP    BLUE    /* blue zaps! */
  1403. X  #endif
  1404. X  
  1405. X  #ifndef EXTERN_H
  1406. X*** include/Old/rm.h    Wed Aug 16 14:10:22 1989
  1407. X--- include/rm.h    Tue Aug 15 20:32:25 1989
  1408. X***************
  1409. X*** 122,128 ****
  1410. X  
  1411. X  #define    ERRCHAR    ']'
  1412. X  
  1413. X! #define MAXPCHARS    28    /* maximum number of mapped characters */
  1414. X  
  1415. X  /*
  1416. X   * The 5 possible states of doors
  1417. X--- 122,128 ----
  1418. X  
  1419. X  #define    ERRCHAR    ']'
  1420. X  
  1421. X! #define MAXPCHARS    32    /* maximum number of mapped characters */
  1422. X  
  1423. X  /*
  1424. X   * The 5 possible states of doors
  1425. X***************
  1426. X*** 185,194 ****
  1427. X   * at() display character types, in order of precedence.
  1428. X   */
  1429. X  #define AT_APP        (uchar)0
  1430. X! /* specific overrides */
  1431. X! #define AT_RED        (uchar)1    /* flame */
  1432. X! #define AT_BLUE     (uchar)4    /* water */
  1433. X! #define AT_WHITE    (uchar)7    /* lightning */
  1434. X  /* non-specific */
  1435. X  #define AT_ZAP        (uchar)8
  1436. X  #define AT_MON        (uchar)9
  1437. X--- 185,191 ----
  1438. X   * at() display character types, in order of precedence.
  1439. X   */
  1440. X  #define AT_APP        (uchar)0
  1441. X! /* 1-7 are specific overrides, see decl.h */
  1442. X  /* non-specific */
  1443. X  #define AT_ZAP        (uchar)8
  1444. X  #define AT_MON        (uchar)9
  1445. X*** include/Old/unixconf.h    Wed Aug 16 14:12:01 1989
  1446. X--- include/unixconf.h    Fri Aug 11 17:10:55 1989
  1447. X***************
  1448. X*** 42,48 ****
  1449. X--- 42,50 ----
  1450. X                 run with Microport Sys V/AT version 2.4.
  1451. X                 By Jay Maynard */
  1452. X  
  1453. X+ /* #define TEXTCOLOR    /* Use System V r3.2 terminfo color support */
  1454. X  
  1455. X+ 
  1456. X  /*
  1457. X   * The next two defines are intended mainly for the Andrew File System,
  1458. X   * which does not allow hard links.  If NO_FILE_LINKS is defined, lock files
  1459. X***************
  1460. X*** 70,79 ****
  1461. X   * variable MAILREADER; otherwise an internal pager will be used.
  1462. X   * A stat system call is done on the mailbox every MAILCKFREQ moves.
  1463. X   */
  1464. X  
  1465. X! #define    MAIL
  1466. X! #define    DEF_MAILREADER    "/usr/ucb/Mail"        /* or e.g. /bin/mail */
  1467. X! #define    MAILCKFREQ    50
  1468. X  
  1469. X  #ifdef COMPRESS
  1470. X  /* Some implementations of compress need a 'quiet' option.
  1471. X--- 72,89 ----
  1472. X   * variable MAILREADER; otherwise an internal pager will be used.
  1473. X   * A stat system call is done on the mailbox every MAILCKFREQ moves.
  1474. X   */
  1475. X  
  1476. X! #define    MAIL
  1477. X! #if defined(BSD) || defined(ULTRIX)
  1478. X! #define    DEF_MAILREADER    "/usr/ucb/Mail"
  1479. X! #else
  1480. X! # ifdef SYSV
  1481. X! #define    DEF_MAILREADER    "/usr/bin/mailx"
  1482. X! # else
  1483. X! #define    DEF_MAILREADER    "/bin/mail"
  1484. X! # endif
  1485. X! #endif
  1486. X! #define    MAILCKFREQ    50
  1487. X  
  1488. X  #ifdef COMPRESS
  1489. X  /* Some implementations of compress need a 'quiet' option.
  1490. X***************
  1491. X*** 133,144 ****
  1492. X  #ifdef hc    /* older versions of the MetaWare High-C compiler define this */
  1493. X  # ifdef __HC__
  1494. X  #  undef __HC__
  1495. X! # endif __HC__
  1496. X  # define __HC__ hc
  1497. X  # undef hc
  1498. X! #endif hc
  1499. X  
  1500. X  #include "extern.h"
  1501. X  
  1502. X  #endif /* UNIXCONF_H /* */
  1503. X  #endif /* UNIX /* */
  1504. X--- 141,164 ----
  1505. X  #ifdef hc    /* older versions of the MetaWare High-C compiler define this */
  1506. X  # ifdef __HC__
  1507. X  #  undef __HC__
  1508. X! # endif
  1509. X  # define __HC__ hc
  1510. X  # undef hc
  1511. X! #endif
  1512. X! 
  1513. X! #ifdef TEXTCOLOR
  1514. X! /* configurable colors */
  1515. X! #  define HI_MON    RED    /* red slaps! */
  1516. X! #  define HI_OBJ    MAGENTA
  1517. X! #  define HI_METAL    CYAN
  1518. X! #  define HI_ORGANIC    GREEN
  1519. X! #  define HI_GOLD    YELLOW
  1520. X! #  define HI_ZAP    BLUE    /* blue zaps! */
  1521. X! #endif
  1522. X  
  1523. X+ #ifndef EXTERN_H
  1524. X  #include "extern.h"
  1525. X+ #endif
  1526. X  
  1527. X  #endif /* UNIXCONF_H /* */
  1528. X  #endif /* UNIX /* */
  1529. X*** /dev/null    Tue Aug 15 10:53:49 1989
  1530. X--- include/def_os2.h    Tue Aug 15 20:49:24 1989
  1531. X***************
  1532. X*** 0 ****
  1533. X--- 1,108 ----
  1534. X+ /*    SCCS Id: @(#)def_os2.h    3.0    89/08/13
  1535. X+ 
  1536. X+ /*  OS/2 defines based on MSC 5.1 OS/2 include files.
  1537. X+     Only a small portion of all OS/2 defines are needed,
  1538. X+     so the actual include files are not used.
  1539. X+ 
  1540. X+     Timo Hakulinen
  1541. X+  */
  1542. X+ 
  1543. X+ #define APIENTRY pascal far
  1544. X+ 
  1545. X+ #define CHAR    char        /* ch  */
  1546. X+ #define SHORT    int        /* s   */
  1547. X+ #define LONG    long        /* l   */
  1548. X+ #define INT    int        /* i   */
  1549. X+ 
  1550. X+ typedef unsigned char UCHAR;    /* uch */
  1551. X+ typedef unsigned int  USHORT;    /* us  */
  1552. X+ typedef unsigned long ULONG;    /* ul  */
  1553. X+ typedef unsigned int  UINT;    /* ui  */
  1554. X+ 
  1555. X+ typedef unsigned char BYTE;    /* b   */
  1556. X+ typedef BYTE   far *PBYTE;
  1557. X+ 
  1558. X+ typedef unsigned short    SHANDLE;
  1559. X+ typedef SHANDLE     HKBD;
  1560. X+ typedef SHANDLE     HVIO;
  1561. X+ typedef SHANDLE     HDIR;    /* hdir */
  1562. X+ typedef HDIR far *PHDIR;
  1563. X+ 
  1564. X+ typedef USHORT far *PUSHORT;
  1565. X+ typedef char far *PSZ;
  1566. X+ 
  1567. X+ typedef struct {
  1568. X+     UCHAR  chChar;
  1569. X+     UCHAR  chScan;
  1570. X+     UCHAR  fbStatus;
  1571. X+     UCHAR  bNlsShift;
  1572. X+     USHORT fsState;
  1573. X+     ULONG  time;
  1574. X+ } KBDKEYINFO;
  1575. X+ typedef KBDKEYINFO far *PKBDKEYINFO;
  1576. X+ 
  1577. X+ /* File time and date types */
  1578. X+ 
  1579. X+ typedef struct _FTIME {     /* ftime */
  1580. X+     unsigned twosecs : 5;
  1581. X+     unsigned minutes : 6;
  1582. X+     unsigned hours   : 5;
  1583. X+ } FTIME;
  1584. X+ typedef FTIME far *PFTIME;
  1585. X+ 
  1586. X+ typedef struct _FDATE {     /* fdate */
  1587. X+     unsigned day     : 5;
  1588. X+     unsigned month   : 4;
  1589. X+     unsigned year    : 7;
  1590. X+ } FDATE;
  1591. X+ typedef FDATE far *PFDATE;
  1592. X+ 
  1593. X+ typedef struct _FILEFINDBUF {    /* findbuf */
  1594. X+     FDATE  fdateCreation;
  1595. X+     FTIME  ftimeCreation;
  1596. X+     FDATE  fdateLastAccess;
  1597. X+     FTIME  ftimeLastAccess;
  1598. X+     FDATE  fdateLastWrite;
  1599. X+     FTIME  ftimeLastWrite;
  1600. X+     ULONG  cbFile;
  1601. X+     ULONG  cbFileAlloc;
  1602. X+     USHORT attrFile;
  1603. X+     UCHAR  cchName;
  1604. X+     CHAR   achName[13];
  1605. X+ } FILEFINDBUF;
  1606. X+ typedef FILEFINDBUF far *PFILEFINDBUF;
  1607. X+ 
  1608. X+ /* KBDINFO structure, for KbdSet/GetStatus */
  1609. X+ typedef struct _KBDINFO {    /* kbst */
  1610. X+     USHORT cb;
  1611. X+     USHORT fsMask;
  1612. X+     USHORT chTurnAround;
  1613. X+     USHORT fsInterim;
  1614. X+     USHORT fsState;
  1615. X+ } KBDINFO;
  1616. X+ typedef KBDINFO far *PKBDINFO;
  1617. X+ 
  1618. X+ /* VIOMODEINFO structure, for VioGetMode */
  1619. X+ typedef struct _VIOMODEINFO {
  1620. X+     USHORT cb;
  1621. X+     UCHAR  fbType;
  1622. X+     UCHAR  color;
  1623. X+     USHORT col;
  1624. X+     USHORT row;
  1625. X+     USHORT hres;
  1626. X+     USHORT vres;
  1627. X+     UCHAR  fmt_ID;
  1628. X+     UCHAR  attrib;
  1629. X+ } VIOMODEINFO;
  1630. X+ typedef VIOMODEINFO far *PVIOMODEINFO;
  1631. X+ 
  1632. X+ /* OS2 API functions */
  1633. X+ 
  1634. X+ USHORT APIENTRY KbdGetStatus(PKBDINFO, HKBD);
  1635. X+ USHORT APIENTRY KbdSetStatus(PKBDINFO, HKBD);
  1636. X+ USHORT APIENTRY KbdCharIn(PKBDKEYINFO, USHORT, HKBD );
  1637. X+ USHORT APIENTRY DosQFSInfo(USHORT, USHORT, PBYTE, USHORT);
  1638. X+ USHORT APIENTRY DosFindFirst(PSZ, PHDIR, USHORT, PFILEFINDBUF, USHORT, PUSHORT, ULONG);
  1639. X+ USHORT APIENTRY DosFindNext(HDIR, PFILEFINDBUF, USHORT, PUSHORT);
  1640. X+ USHORT APIENTRY DosSelectDisk(USHORT);
  1641. X+ USHORT APIENTRY VioGetMode(PVIOMODEINFO, HVIO);
  1642. END_OF_FILE
  1643. if test 47487 -ne `wc -c <'patch02a'`; then
  1644.     echo shar: \"'patch02a'\" unpacked with wrong size!
  1645. fi
  1646. # end of 'patch02a'
  1647. fi
  1648. echo shar: End of archive 1 \(of 7\).
  1649. cp /dev/null ark1isdone
  1650. MISSING=""
  1651. for I in 1 2 3 4 5 6 7 ; do
  1652.     if test ! -f ark${I}isdone ; then
  1653.     MISSING="${MISSING} ${I}"
  1654.     fi
  1655. done
  1656. if test "${MISSING}" = "" ; then
  1657.     echo You have unpacked all 7 archives.
  1658.     rm -f ark[1-9]isdone
  1659. else
  1660.     echo You still need to unpack the following archives:
  1661.     echo "        " ${MISSING}
  1662. fi
  1663. ##  End of shell archive.
  1664. exit 0
  1665.